﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GestionManoDeObra.BusinessEntity;
using System.Data.SqlClient;
using GestionManoDeObra.Consulta;

namespace GestionManoDeObra.DataAccess
{
    public class ImplementoTrabajadorDAL
    {
        public int Crear(ImplementoTrabajador implementoTrabajador)
        {
            int IdImplementoTrabajadorNuevo;
            string sql = "INSERT INTO t_ImplementoTrabajador (IdTrabajador, Fecha, Hora, NumeroOrden) values (@IdTrabajador, @Fecha, @Hora, @NumeroOrden);";
            sql = sql + "SELECT CAST(scope_identity() AS int)";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@IdTrabajador", implementoTrabajador.IdTrabajador));
                    com.Parameters.Add(new SqlParameter("@Fecha", implementoTrabajador.Fecha));
                    com.Parameters.Add(new SqlParameter("@Hora", implementoTrabajador.Hora));
                    com.Parameters.Add(new SqlParameter("@NumeroOrden", implementoTrabajador.NumeroOrden));
                    IdImplementoTrabajadorNuevo =  (int)com.ExecuteScalar();

                    return IdImplementoTrabajadorNuevo;
                }
            }
        }

        public ImplementoTrabajador Obtener(int IdImplementoTrabajador)
        {
            ImplementoTrabajador implementoTrabajador = null;
            string sql = "SELECT * FROM t_ImplementoTrabajador WHERE IdImplementoTrabajador = @IdImplementoTrabajador";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@IdImplementoTrabajador", IdImplementoTrabajador));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            implementoTrabajador = new ImplementoTrabajador()
                            {
                                IdImplementoTrabajador = (int)resultado["IdImplementoTrabajador"],
                                IdTrabajador = (int)resultado["IdTrabajador"],
                                Fecha = (DateTime)resultado["Fecha"],
                                Hora = (DateTime)resultado["Hora"],
                                NumeroOrden = (string)resultado["NumeroOrden"]
                            };
                        }
                    }
                }
            }
            return implementoTrabajador;
        }

        public IList<ImplementosPrestados> ObtenerImplementosPrestados()
        {
            IList<ImplementosPrestados> detalle = new List<ImplementosPrestados>();
            ImplementosPrestados item = null;
            string sql = "";
            sql = sql + "select t.IdTrabajador, t.Nombre, t.Apellido, t.Edad, t.DNI, e.Nombre as empresa, i.NumeroOrden, i.IdImplementoTrabajador ";
            sql = sql + "from t_Trabajador t, ";
            sql = sql + "t_Empresa e, ";
            sql = sql + "t_ImplementoTrabajador i  ";
            sql = sql + "where ";
            sql = sql + "i.IdTrabajador = t.IdTrabajador ";
            sql = sql + "and t.IdEmpresa = e.IdEmpresa ";
            sql = sql + "and i.IdImplementoTrabajador in( ";
            sql = sql + "select IdImplementoTrabajador from t_ImplementoTrabajadorDetalle ";
            sql = sql + "where Estado='P') ";
            sql = sql + "order by i.IdImplementoTrabajador desc";

            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            item = new ImplementosPrestados()
                            {
                                IdTrabajador = (int)resultado["IdTrabajador"],
                                Nombre = (string)resultado["Nombre"],
                                Apellido = (string)resultado["Apellido"],
                                Edad = (string)resultado["Edad"],
                                DNI = (string)resultado["DNI"],
                                Empresa = (string)resultado["Empresa"],
                                NumeroOrden = (string)resultado["NumeroOrden"],
                                IdImplementoTrabajador = (int)resultado["IdImplementoTrabajador"]
                            };

                            detalle.Add(item);
                        }
                    }
                }
            }
            return detalle;

        }
    }
}
